[t:/]$ 지식_

Linux Kernel Startup

2004/03/07

기억도 가물하지만 옛날에 써둔 노트가 있어서 옮겨둔다.

start_kernel() / 시스템 독립적인 함수 부팅 후 메모리에서 제거

lld 스크립트

. 은 현재 주소를 나태낸다.
*(.start) -> .start 들을 모아서 나열한다.

arch/arm/vmlinux_armv.lds.in 

.init 섹션 / 부팅 코드 = 커널 스타트 업 + start_kernel()
.text 섹션 / 커널 실코드

arch/arm/boot/compressed/vmlinux.lds.in 

http://www.arm.linux.org.uk/developer/booting.php

lib/inflate.c -> gunzip() -> STACK + BSS 필요

vmlinux -> ELF / piggy.o -> 디버깅 정보 제거된 ELF 형태의 binary
vmlinux = head.o + misc.o + head-s3c2440.o | + piggy.o
zImage -> ELF 를 bin 형으로

arch/arm/boot/compressed/vmlinux.lds.in 

arch/arm/boot/compressed/head.S -> C 언어 환경을 만든다. 

head.S 의 .start -> head-s3c2440.S 의 .start

arch/arm/mm/proc-코어이름.S

vmlinux -> arch/arm/vmlinux-armv.lds.in




공유하기













[t:/] is not "technology - root". dawnsea, rss